package com.example.parallelandroid;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.annotation.StyleRes;

import com.bumptech.glide.Glide;

/**
 * 创建自定义的Dialog，主要学习实现原理
 * Created by admin on 2017/8/30.
 */

public class UnlockDialog extends Dialog {
    private Button yes;//确定按钮
    private TextView titleTV;//消息标题文本
    private TextView tvRequire,tvCharm,tvDes;
    private ImageView image,close;
    private String titleStr;//从外界设置的title文本
    private String imgSrc,requireStr,charmStr,desStr;//从外界设置的内容文本
    //确定文本和取消文本的显示的内容
    private String yesStr;
    private onYesOnclickListener yesOnclickListener;//确定按钮被点击了的监听器

    public UnlockDialog(@NonNull Context context, @StyleRes int themeResId) {
        super(context, themeResId);
    }

    /**
     * 设置确定按钮的显示内容和监听
     *
     * @param str
     * @param yesOnclickListener
     */
    public void setYesOnclickListener(String str, onYesOnclickListener yesOnclickListener) {
        if (str != null) {
            yesStr = str;
        }
        this.yesOnclickListener = yesOnclickListener;
    }



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_unlock);
        //空白处可以取消动画
        setCanceledOnTouchOutside(true);

        //初始化界面控件
        initView();

        //初始化界面数据
        initData();
        //初始化界面控件的事件
        initEvent();
    }

    /**
     * 初始化界面控件
     */
    private void initView() {
        yes = findViewById(R.id.yes);
        image = (ImageView) findViewById(R.id.iv_image);
        close = (ImageView) findViewById(R.id.close);
        titleTV = (TextView) findViewById(R.id.title);
        tvRequire = (TextView) findViewById(R.id.tv_require);
        tvCharm = (TextView) findViewById(R.id.tv_charm);
        tvDes = (TextView) findViewById(R.id.tv_description);

    }

    /**
     * 初始化界面控件的显示数据
     */
    private void initData() {
        //如果用户自定了title和内容
        if (titleStr != null) {
            titleTV.setText(titleStr);
        }
        if(imgSrc!=null){
            //加载图片
            Glide.with(this.getContext()).load(imgSrc).into(image);
        }
        if (requireStr != null) {
            tvRequire.setText(requireStr);
        }
        if (charmStr != null) {
            tvCharm.setText(charmStr);
        }
        if (desStr != null) {
            tvDes.setText(desStr);
        }
        //如果设置按钮文字
        if (yesStr != null) {
            yes.setText(yesStr);
        }
    }

    /**
     * 初始化界面的确定监听
     */
    private void initEvent() {
        //设置确定按钮被点击后，向外界提供监听
        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (yesOnclickListener != null) {
                    yesOnclickListener.onYesOnclick();
                }
            }
        });
        close.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                UnlockDialog.this.dismiss();
            }
        });

    }

    /**
     * 从外界Activity为Dialog设置标题
     *
     * @param title
     */
    public void setTitle(String title) {
        titleStr = title;
    }
    /**
     * 从外界Activity为Dialog设置内容
     *
     * @param src,require,charm,des
     */
    public void setImg(String src){
        imgSrc = src;
    }
    public void setTvRequire(String require) {
        requireStr = require;
    }
    public void setTvCharm(String charm) {
        charmStr = charm;
    }
    public void setTvDes(String des) {
        desStr = des;
    }


    public interface onNoOnclickListener {
        public void onNoClick();
    }

    public interface onYesOnclickListener {
        public void onYesOnclick();
    }
}

